using System;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using CE.Database;

/// <summary>
/// Summary description for LoginHistoryDB
/// </summary>
/// 
namespace CE.User
{
    public class LoginHistoryDB
    {
        public LoginHistoryDB()
        {
            //
            // TODO: Add constructor logic here
            //
        }

        public Int64 Insert(LoginHistory loghis)
        {
            MyDatabase _db = new MyDatabase();
            Int64 _result = -1;
            string _spName = "sprocUserLoginHistoryInsertUpdateSingleItem";
            SortedList _sPara = new SortedList();
            #region Parameter
            _sPara.Add("@LoginHisId", loghis.LoginHisId);
            _sPara.Add("@CEID", loghis.CEID);
            _sPara.Add("@UsrTypeId", loghis.UserTypeId);
            _sPara.Add("@StartTime", loghis.StartTime);
            _sPara.Add("@EndTime", loghis.EndTime);
            _sPara.Add("@IsExpired", loghis.IsExpired);
            _sPara.Add("@Status", loghis.Status);
            #endregion

            _result = _db.ExecuteSP(_spName, _sPara);
            return _result;
        }

        public bool LogoutUpdate(Int64 LoginHisId, DateTime EndTime, string Status)
        {
            MyDatabase _db = new MyDatabase();
            Int64 _result = -1;
            string strSQL = "Update tblLoginHistory Set EndTime = @EndTime, [Status] = @Status, [IsExpired] = 0 Where LoginHisId = @LoginHisID";
            SortedList _sPara = new SortedList();
            #region Parameter
            _sPara.Add("@LoginHisId", LoginHisId);
            _sPara.Add("@EndTime", EndTime);
            _sPara.Add("@Status", Status);
            #endregion

            _result = _db.ExecuteNonSqlStatement(strSQL, _sPara);
            return _result > 0;
        }

        public LoginHistory GetLoginHistory(Int64 LoginHisId)
        {
            LoginHistory _mylogin = null;
            MyDatabase _db = new MyDatabase();
            string _spName = "sprocUserLoginHistorySelectSingleItem";

            SortedList _spara = new SortedList();
            _spara.Add("@LoginHisId", LoginHisId);

            using (DataTable _dt = _db.GetDataTableBySP(_spName, _spara))
            {
                if (_dt != null && _dt.Rows.Count > 0)
                {
                    _mylogin = new LoginHistory();
                    _mylogin = FillDataRecord(_dt, 0);
                }
            }
            return _mylogin;
        }

        public LoginHistory GetLastLoginHistory(Int64 CEID, Int32 UserTypeId)
        {
            LoginHistory _mylogin = null;
            MyDatabase _db = new MyDatabase();
            string _spName = "sprocUserLastLoginHistorySelectSingleItem";

            SortedList _spara = new SortedList();
            _spara.Add("@CEID", CEID);
            _spara.Add("@UsrTypeId", UserTypeId);

            using (DataTable _dt = _db.GetDataTableBySP(_spName, _spara))
            {
                if (_dt != null && _dt.Rows.Count > 0)
                {
                    _mylogin = new LoginHistory();
                    _mylogin = FillDataRecord(_dt, 0);
                }
            }
            return _mylogin;
        }

        private LoginHistory FillDataRecord(DataTable myDataTable, int RowId)
        {
            LoginHistory myLogin = new LoginHistory();
            myLogin.LoginHisId = Convert.ToInt64(myDataTable.Rows[RowId]["LoginHisId"].ToString());
            myLogin.CEID = Convert.ToInt64(myDataTable.Rows[RowId]["CEID"].ToString());
            myLogin.UserTypeId = Convert.ToInt32(myDataTable.Rows[RowId]["UsrTypeId"].ToString());
            myLogin.StartTime = Convert.ToDateTime(myDataTable.Rows[RowId]["StartTime"].ToString());
            myLogin.EndTime = Convert.ToDateTime(myDataTable.Rows[RowId]["EndTime"].ToString());
            myLogin.IsExpired = Convert.ToBoolean(myDataTable.Rows[RowId]["IsExpired"].ToString());
            myLogin.Status = myDataTable.Rows[RowId]["Status"].ToString();
            return myLogin;
        }
    }
}